package com.luck.picture.lib.ui;
import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;
import com.luck.picture.lib.R;
public class PictureVideoPlayActivity extends PictureBaseActivity implements MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener, View.OnClickListener {
private String video_path = "";
private ImageView picture_left_back;
private MediaController mMediaController;
private VideoView mVideoView;
private ImageView iv_play;
private int mPositionWhenPaused = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
super.onCreate(savedInstanceState);
setContentView(R.layout.picture_activity_video_play);
video_path = getIntent().getStringExtra("video_path");
picture_left_back = (ImageView) findViewById(R.id.picture_left_back);
mVideoView = (VideoView) findViewById(R.id.video_view);
mVideoView.setZOrderOnTop(true);// 解决播放视频透明问题
iv_play = (ImageView) findViewById(R.id.iv_play);
mMediaController = new MediaController(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setOnPreparedListener(this);
mVideoView.setMediaController(mMediaController);
picture_left_back.setOnClickListener(this);
iv_play.setOnClickListener(this);
}
public void onStart() {
// Play Video
mVideoView.setVideoPath(video_path);
mVideoView.start();
super.onStart();
}
public void onPause() {
// Stop video when the activity is pause.
mPositionWhenPaused = mVideoView.getCurrentPosition();
mVideoView.stopPlayback();
super.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMediaController = null;
mVideoView = null;
}
public void onResume() {
// Resume video player
if (mPositionWhenPaused >= 0) {
mVideoView.seekTo(mPositionWhenPaused);
mPositionWhenPaused = -1;
}
super.onResume();
}
public boolean onError(MediaPlayer player, int arg1, int arg2) {
return false;
}
public void onCompletion(MediaPlayer mp) {
iv_play.setVisibility(View.VISIBLE);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.picture_left_back) {
finish();
} else if (id == R.id.iv_play) {
mVideoView.start();
iv_play.setVisibility(View.INVISIBLE);
}
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(new ContextWrapper(newBase) {
@Override
public Object getSystemService(String name) {
if (Context.AUDIO_SERVICE.equals(name))
return getApplicationContext().getSystemService(name);
return super.getSystemService(name);
}
});
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video started
mVideoView.setBackgroundColor(Color.TRANSPARENT);
return true;
}
return false;
}
});
}
}